# -*- coding: utf-8 -*-
# 如果你的程序（包括注释）中包含中文，请加上上面这一行，用于指明编码（utf-8）。
# #号开头的行都是注释。

# 如何编辑本程序：
#     用任何文本编辑器均可编辑。

# 如何运行本程序：
#     在终端中，运行：python p702_mysql.py
#
# 依赖模块：
#     MySQLdb  (pip install mysqlclient)
#
# 参考链接：https://www.python-course.eu/sql_python.php
#

'''
如何在mysql中配置用户和密码：

（1）启动mysql终端：
mysql -u root -p

（2）然后在mysql终端中运行以下命令：
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'testpassword';
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;

（3）以testuser和testpassword登录mysql并创建下例中要用到的数据库：
CREATE DATABASE company;

'''

import MySQLdb

# connect的参数需要根据实际情况设置。
connection = MySQLdb.connect(
    host = 'localhost',
    user = 'testuser',
    passwd = 'testpassword',
    db = 'company')
    
cursor = connection.cursor()

# 如果employee表已存在，删去。
cursor.execute ("DROP TABLE IF EXISTS employee")


sql_command = """
CREATE TABLE employee ( 
staff_number INTEGER PRIMARY KEY, 
fname VARCHAR(20), 
lname VARCHAR(30), 
gender CHAR(1), 
joining DATE,
birth_date DATE);"""

cursor.execute(sql_command)

staff_data = [ ("William", "Shakespeare", "m", "1961-10-25"),
               ("Frank", "Schiller", "m", "1955-08-17"),
               ("Jane", "Wall", "f", "1989-03-14"),
               ]
           
for staff, p in enumerate(staff_data): # enumerate每次返回序号和列表中的元素。   
    format_str = """INSERT INTO employee (staff_number, fname, lname, gender, birth_date)
    VALUES ({staff_no}, '{first}', '{last}', '{gender}', '{birthdate}');"""

    sql_command = format_str.format(staff_no=staff, first=p[0], last=p[1], gender=p[2], birthdate = p[3])
    print(sql_command)
    cursor.execute(sql_command)
    
connection.commit()

cursor.close()
connection.close()
